1. Field of the Invention
This invention relates generally to the field of data networks. More particularly, the invention relates to an improved system and method for managing routers and communication interfaces on a computing device.
2. Description of the Related Art
FIG. 1 illustrates a prior art computing device 101 communicatively coupled to a plurality of routers 120-123 through a variety of different communication interfaces en—0 110, en—1 111, en—2 112, en—1 113. Examples of such communication interfaces include IEEE 802.3-based interfaces (i.e., Ethernet), IEEE 802.11-based interfaces (e.g., “WiFi”), Bluetooth interfaces, and wireless cellular data network interfaces (e.g., such as CPRS, 3G, and/or 4G interfaces).
As illustrated, the routers 120-123 may connect the computing device 101 to local hosts 140-142 on private local area networks (LANs) 130-133. In addition, the routers 120-123 may route packets between the computing device 101 and remote hosts 143-144 through gateway devices 150-151 coupled wide area networks 610 such as the public Internet. Communication over the various networks requires the computing device 101 and routers 120-123 to implement a common network protocol such as the TCP/IP protocol. Consequently, as illustrated in FIG. 1, the computing device includes a networking engine 102 for implementing a network protocol stack 103. To communicate over the network, an application 105 typically makes calls to the networking engine 102 and, in response, the networking stack 102 selects an appropriate interface and router through which to establish network connections.
There are currently two different forms of the TCP/IP networking protocol, referred to as Internet Protocol Version 4 (IPV4) and Internet Protocol Version 6 (IPV6). IPV6 is a version of the Internet Protocol (IP) suite that is designed to succeed Internet Protocol version 4 (IPV4), which is currently in widespread use across the Internet. IPV6 is largely incompatible with IPV4, utilizing a different addressing space and connection protocol. One difference between IPV6 and IPV4 which is particularly relevant to the present application is that routers on an IPV6 network designate a “router preference” which must be obeyed by the IPV6 networking stack 103. Specifically, each IPV6 router transmits a “router advertisement” packet to the IPV6 networking stack 103 which contains network-layer configuration parameters including a router preference level of “high,” “medium” or “low.” To be compatible with the IPV6 protocol, the IPV6 networking stack 103 must make a default IPV6 router selection 104 based on the preference levels specified by each of the routers 120-123. Thus, if one particular router 121 species a “high” preference level while all of the other routers 120, 122-123 specify “medium” or “low” preference levels, the default router selection 104 must be set to router 121.
One problem with this configuration is that, in many cases, the user of the computing device may want to communicate over an interface which is not associated with the selected default router 121. For example, if the user has access to both a Wifi network through interface 112 and a cellular network through interface 111, the user may want to connect over the WiFi network given the cost and speed of the cellular network. However, if the default router 121 is associated with the cellular interface 111, then the networking engine 102 will automatically connect using the cellular interface 111. In addition, certain applications require access to particular private networks. For example, host 142 on private network 131 may represent a data service such as visual voicemail offered by the user's cellular service provider. Consequently, all applications which rely on this data service must have access to private network 131, which may not be the case in current implementations. As such, what is needed is a more flexible and intelligent manner to select interfaces and routers on an IPV6 network.